//
//  MotionDetect2ViewController.m
//  MotionDetect2
//
//  Created by Naoki TSUTSUI on 10/02/06.
//  Copyright iphoneworld.jp 2010. All rights reserved.
//

#import "MotionDetect2ViewController.h"

@implementation MotionDetect2ViewController
@synthesize statusLabel;
@synthesize statusClearButton;

- (void)dealloc {
  [statusLabel release];
  [statusClearButton release];
  [super dealloc];
}


- (IBAction)statusClear:(id)sender {
  // 状況表示をクリアする
  statusLabel.text = @"";
}

#pragma mark -
#pragma mark Configuration

// モーションイベントを取得するために、ファーストレスポンダになる必要があるため、YESを返す。
// １タップのみのタッチ検出には必要ない。
// このメソッドは、becomeFirstResponderメソッドによりコールされる
// 
- (BOOL)canBecomeFirstResponder {
  NSLog(@"canBecomeFirstResponder");
	return YES;
}


#pragma mark -
#pragma mark ViewController method

- (void)viewDidLoad {
  [super viewDidLoad];
  statusLabel.text = @"ここに状況を表示します";
}

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  // レシーバ（この場合はself）がファーストレスポンダになることを通知する
  // canBecomeFirstResponderがコールされる
  if ([self becomeFirstResponder]) {
    NSLog(@"ファーストレスポンダになれる");
  }
}
 
- (void)didReceiveMemoryWarning {
	// Releases the view if it doesn't have a superview.
  [super didReceiveMemoryWarning];
	
	// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
  NSLog(@"viewDidUnload");
	// Release any retained subviews of the main view.
	// e.g. self.myOutlet = nil;
  self.statusLabel = nil;
  self.statusClearButton = nil;
}


#pragma mark -
#pragma mark Motion-event handling


// モーションイベントハンドラを実装します。
// とたえ中身がなくても、全てのハンドラを実装することが推奨されている。

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
  NSLog(@"motionBegan...");
}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
	if (motion = UIEventSubtypeMotionShake ) {
    NSLog(@"motionEnded!!");
    statusLabel.text = @"シェイクされました";
	}
}

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
  NSLog(@"motionCancelled");
}


#pragma mark -
#pragma mark Touch handling


// タッチイベントハンドラを実装します。
// とたえ中身がなくても、全てのハンドラを実装することが推奨されている。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesBegan");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesMoved");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesEnded");

	UITouch *theTouch = [touches anyObject];
	if ([theTouch tapCount] == 1) {
    statusLabel.text = @"タップされました";
	}
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"touchesCancelled");
}

@end
